package com.itheima.service;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.itheima.mapper.SiteMapper;
import com.itheima.pojo.Site;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;


/**
 * @author 林晓伟
 */
@Service
public class SiteService {
    @Resource
    private SiteMapper siteMapper;

    @Resource
    private RedisTemplate<String, String> stringRedisTemplate;


    /**
     * F08-设置默认收货地址
     */
    public Site alls(Site site) {
        List<Site> we = siteMapper.we();
        for (Site site1 : we) {
            siteMapper.u(site1);
        }
        siteMapper.upda(site);
        return siteMapper.alls(site.getId());
    }

    /**
     * 获取默认收货地址
     *
     * @return 返回 IsDefault 为1的收货地址集合
     */
    public List<Site> all() {
        LambdaQueryWrapper<Site> siteLambdaQueryWrapper = new LambdaQueryWrapper<>();
        siteLambdaQueryWrapper.eq(Site::getIsDefault, 1);
        return siteMapper.selectList(siteLambdaQueryWrapper);
    }

    /**
     * 获取收货地址列表
     *
     * @return 返回收货地址集合
     */
    public List<Site> alll() {
        //使用redis优化读取的速度，
        // String site = stringRedisTemplate.opsForValue().get("site");
        // if (site != null){
        //     return JSON.parseArray(site, Site.class);
        // }

        List<Site> sites = siteMapper.selectList(null);

        // String s1 = JSON.toJSONString(sites);
        // stringRedisTemplate.opsForValue().set("site",s1);
        return sites;
    }

    /**
     * 根据id获取收货地址
     *
     * @param id 地址id
     * @return 返回所有地址对象
     */
    public Site findbyId(String id) {
        return siteMapper.selectById(id);
    }

    /**
     * 添加收货地址
     *
     * @param site 添加的数据
     * @return 返回Integer 判断是否添加成功
     */
    public Site aad(Site site) {
        long l = System.currentTimeMillis();
        String s = String.valueOf(l);
        site.setId(s);
        siteMapper.insert(site);
        return siteMapper.selectById(s);
    }

    /**
     * 删除收货地址
     *
     * @param ids 主键id
     * @return 返回Integer 判断是否删除成功
     */
    public Integer delete(String ids) {
        return siteMapper.deleteById(ids);
    }

    /**
     * 修改收货地址
     *
     * @param site 修改的值
     * @return 返回Integer 判断是否修改成功
     */
    public Integer update(Site site) {
        return siteMapper.updateById(site);
    }
}
